// tonken：用户临时身份
// 登录时，客户发送用户密码
// 服务端验证密码是否正确，校验通过后，生成token，返回给客户
// 客户再次请求服务端资源时，携带token（放在请求头），服务端验证token是否有效，有效则允许访问，否则拒绝访问

// 引入jsonwebtoken模块
const jwt = require('jsonwebtoken');

let cert = 'text'

// 创建token类
class Jwt {
    constructor(data, minute) {
        this.data = data;
        this.minute = minute || 60 * 24;//默认48小时
    }
    // 生成token
    getToken() {
        let data = this.data;
        return jwt.sign(
            {
                data//token携带的数据
            },
            cert,//私钥
            {
                // 参数options
                algorithm: 'HS256',//加密算法
                issuer: "one",//签发者
                expiresIn: this.minute * 60//过期时间，单位秒
            }
        );
    }
    // 校验token
    verifyToken() {
        let token = this.data
        try {
            let info = jwt.verify(token, cert, {
                issuer: "one",
                algorithms: ['HS256']
            });
            return {
                info,
                code: 200
            };

        } catch (err) {
            return {
                code: -1,
                msg: "校验失败，请重新登录"
            }
        }
    }
}
module.exports = Jwt;

